package top.eggcode.plugins.query.def;

import java.util.Optional;

/**
 * Title: 持久层基类接口
 * Description: TODO
 * Date: 2021/3/31 10:09
 *
 * @author JiaQi Ding
 * @version 1.0
 */
public interface SingleRepository<T> {

    /**
     * 查询一条数据
     *
     * @param id 主键
     * @return 实体
     */
    Optional<T> select(Class<T> entityClass, String id);


    /**
     * 插入一条数据
     *
     * @param entity 实体
     */
    void insert(T entity);

    /**
     * 更新数据
     * 只针对未被JPA容器管理的实体
     *
     * @param entity 实体
     */
    void update(T entity);

    /**
     * 删除一条数据
     *
     * @param entity 实体
     */
    void delete(T entity);
}
